The present application relates generally to an improved data processing system and method. More specifically, the present application is directed to a system and method for issuing dynamic issue masks for processor hang prevention.
In modern processor design, especially in an out-of-order processor design, hang conditions such as livelocks are one of the most difficult problems to find and solve during a design phase, and are often not found until later when the design is implemented in hardware. A livelock condition can be described as a processor executing the same set of instructions repeatedly dYNAMIC without making any real progress. One of the causes of livelock conditions are repeated rescinding and re-issuing from an issue queue and never completing an instruction because of a repeated rescind condition occurring on a resource full or busy condition that is unable to be freed-up.
In general, a processor may implement multiple execution sub-units driven by a single issue port. In this case, if a long-running instruction is executing on one of these sub-units, it is desirable to be able to continue to issue instructions on that issue port. However, if the newly issued instruction conflicts with the currently executing instruction then the newly issued instruction may need to be rescinded and re-issued later. This can happen if the newly issued instruction is for the same execution sub-unit. Rescinding the newly issued instruction can result in a hang if an instruction is reissued and rescinded multiple times. In addition, the rescinding and re-issuing of instructions result in performance loss of the processor.